﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using ZedGraph;
using Simulator;
using Statistics;

namespace ModelConfigurator
{
    public partial class FormGraph : Form
    {
        /// <summary>
        /// Заголовок графика
        /// </summary>
        public string GraphTitle {get; set;}
        /// <summary>
        /// Единицы измерения
        /// </summary>
        public  TimeUnits TimeU{ get; set;}
        /// <summary>
        /// Полученные точки отчетности
        /// </summary>
        public PointsForReport PointList { get; set; }

        //стандартные цвета для раскраски графиков
        private Color[] stdColors = { Color.Blue, Color.Red, Color.DarkGreen, Color.Black, Color.DarkViolet };
        public FormGraph()
        {
            InitializeComponent();
        }
        public FormGraph(string graphTitle, TimeUnits tu, PointsForReport pfr)
        {
            GraphTitle = graphTitle;
            TimeU = tu;
            PointList = pfr;
            InitializeComponent();
        }

        private void FormGraph_Load(object sender, EventArgs e)
        {
            //возьмем панель окошка
            GraphPane pane = Graph1.GraphPane;
            //настроим ее заголовок и подписи по осям
            pane.Title.Text = GraphTitle;
            string TU;

            switch (TimeU)
            {
                case TimeUnits.days:
                    TU = "раб. дней";
                    break;
                case TimeUnits.hours:
                    TU = "часов";
                    break;
                case TimeUnits.minutes:
                    TU = "минут";
                    break;
                default:
                    TU = "секунд";
                    break;
            }
            pane.XAxis.Title.Text = "Время, " + TU;
            pane.YAxis.Title.Text = "Загрузка, ед.";
            //добавим на график столько кривых (случ. цвета), сколькое есть в PointList
            Random r = new Random(System.DateTime.Now.Millisecond);
            List<PointPairList> lst = PointList.GetListsOfOneCategory(0);
            for (int i = 0; i < lst.Count; i++)
            {
                Color c = i < stdColors.GetLength(0) ? stdColors[i] : Color.FromArgb(r.Next(255), r.Next(255), r.Next(255));
                pane.AddCurve(PointList.GetListName(0,i), lst[i],
                    c,SymbolType.None);
            }
            //изменим оси
            Graph1.AxisChange();
        }

        
        private void Graph1_Load(object sender, EventArgs e)
        {
 
        }
    }
}
